<?php
/**
 * 执行dbsql目录中的SQL文件
 * 参数: SQL文件名
 */

// 引入配置文件
require_once 'config.php';

// 检查是否提供了文件名参数
if ($argc < 2) {
    die("请提供SQL文件名作为参数，例如: php execute_sql.php news_system_complete.sql
");
}

// 获取SQL文件名
$sqlFileName = $argv[1];

// 构建SQL文件路径
$sqlFilePath = __DIR__ . '/dbsql/' . $sqlFileName;

// 检查文件是否存在
if (!file_exists($sqlFilePath)) {
    die("SQL文件不存在: $sqlFilePath
");
}

// 读取SQL文件内容
$sqlContent = file_get_contents($sqlFilePath);

// 建立数据库连接
$conn = getDbConnection();

// 设置字符集
$conn->set_charset("utf8");

// 分割SQL语句（简单处理，适用于大多数情况）
$sqlStatements = explode(';', $sqlContent);

// 执行每条SQL语句
$successCount = 0;
$errorCount = 0;
$errorMessages = [];

foreach ($sqlStatements as $statement) {
    $statement = trim($statement);
    if (!empty($statement)) {
        // 特殊处理CREATE DATABASE语句
        if (stripos($statement, 'CREATE DATABASE') === 0) {
            // 提取数据库名称
            preg_match('/CREATE DATABASE (IF NOT EXISTS )?`?([^`;]+)`?/i', $statement, $matches);
            if (isset($matches[2])) {
                $dbName = $matches[2];
                // 先选择默认数据库
                $conn->select_db('mysql');
                // 执行创建数据库语句
                if ($conn->query($statement) === TRUE) {
                    $successCount++;
                    echo "成功创建数据库: $dbName\n";
                    // 选择新创建的数据库
                    $conn->select_db($dbName);
                } else {
                    $errorCount++;
                    $errorMessages[] = "创建数据库失败: " . $conn->error;
                }
            }
        } else {
            // 执行其他SQL语句
            if ($conn->query($statement) === TRUE) {
                $successCount++;
            } else {
                $errorCount++;
                $errorMessages[] = "执行SQL失败: " . $conn->error . "\nSQL: $statement";
            }
        }
    }
}

// 关闭数据库连接
$conn->close();

// 输出执行结果
echo "\n执行结果:\n";
if ($errorCount > 0) {
    echo "成功: $successCount, 失败: $errorCount\n";
    foreach ($errorMessages as $message) {
        echo "错误: $message\n";
    }
} else {
    echo "全部成功执行, 共 $successCount 条语句\n";
}
?>